#ifndef DSPSIMULATOR_REGISTER_H
#define DSPSIMULATOR_REGISTER_H

#include <string>
#include <utility>

template<typename T>
class Register {
protected:
    std::string m_name;            // 寄存器名
    T m_data;                      // 寄存器数据
public:
    Register() = default;

    virtual ~Register() = default;

    Register(const Register &reg) {
        m_name = reg.m_name;
        m_data = reg.m_data;
    }

    std::string getRegName() const { return m_name; };     // 获取寄存器名

    virtual T *getDataPtr() { return &m_data; };  // 获取指向寄存器中数据的指针
    virtual void updateData(T data) { m_data = data; }; // 更新寄存器中存储的数据
};

#endif //DSPSIMULATOR_REGISTER_H
